<template>
  <view class="empty-content" :class="isFullscreen ? 'page-empty-content' : ''">
    <image class="empty-img" :src="emptyImageUrl" mode="aspectFit" />
    <text class="empty-title">{{emptyMessage}}</text>
    <button v-if="buttonText" class="empty-btn" type="primary" @click="emptyButtonClick">{{buttonText}}</button>
  </view>
</template>

<script>
import {imgHost} from "@/utils/api";

/** 缺省页视图组件 */
/**
 * 服务器共上传了6张不同的缺省页图片
 * icon_null_data.png       无数据占位图（默认）
 * icon_null_list.png       list列表无数据占位图
 * icon_null_message.png    无消息数据占位图
 * icon_null_permission.png 无权限占位图
 * icon_null_search.png     无搜索数据占位图
 * icon_null_wifi.png       无网络占位图
 * */
export default {
  name: "EmptyView",
  props: {
    /** 缺省页图片 */
    emptyImage: {
      type: String,
      redirect: true,
      default: 'icon_null_data.png'
    },
    /** 缺省页文字 */
    emptyMessage: {
      type: String,
      default: ''
    },
    /** 是否是全屏使用 */
    isFullscreen: {
      type: Boolean,
      default: false
    },
    /** 按钮文字 */
    buttonText: {
      type: String,
      default: ''
    }
  },
  computed: {
    /** 重新计算获取缺省页图片地址 */
    emptyImageUrl() {
      return imgHost + this.emptyImage
    }
  },
  methods: {
    // 底部按钮
    emptyButtonClick() {
      this.$emit('emptyButtonClick')
    }
  }
}
</script>

<style scoped lang="scss">
.empty-content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  margin: 15rpx 0 35rpx 0;
  width: 100%;
  .empty-img {
    width: 60vw;
  }
  .empty-title {
    margin: 30rpx 0;
    font-size: 28rpx;
    color: #999999;
  }
  .empty-btn {
    margin: 45rpx 15rpx;
    color: #94bcff;
    width: 50%;
    font-size: 35rpx;
    background: transparent;
    border: 2rpx solid #94bcff;
    border-radius: 8rpx;
    line-height: 80rpx;
  }
  .empty-btn::after {
    border: none;
  }
}
.page-empty-content {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}
</style>
